草庐IT

【LeetCode】剑指 Offer(27)

全部标签

《剑指offer》Java版--12.矩阵中的路径(DFS+剪枝)

剑指offer原题:矩阵中的路径请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfee”的路径(路径中的字母用下画线标出)。但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入这个格子。LeetCode原题:https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof

LeetCode:455. 分发饼干——贪心算法

🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123贪心算法是在每个阶段选取局部最优解,最终得到全局最优解的一种思想。贪心算法与动态规划的思路相似,但贪心算法要在每个阶段选择最优解,而这个最优解不一定是全局最优解,贪心算法在某些情况并不能得到全局最优解。贪心算法的基本思路:找到最优子结构:将问题分解为多个子问题,并且每个子问题具有最优子结构,即解决子问题的最优解可以组合成原问题的最优解。找到贪心策略:为了解决每个子问题,找出一种最优策略,使得每个子问题都采用该策略,最终可以得到原问题的最优解。证明贪心策略的合理性:贪心策略在每个阶段选取局部最优解,最终可以得到全局最优解

每日一题——LeetCode1002

方法一个人方法:将words里的字符串的每个字符出现的次数都转为键值对的形式:循环求两两键值对数组的交集:最后的交集就是重复出现的字符和次数,把键值对转回字符数组形式即可思路对了,但是太复杂了,时间效率很低varcommonChars=function(words){vararr=[],newWords=[],union=[]for(varitemofwords){for(varcharofitem){if(!arr[char]){arr[char]=1}else{arr[char]++}}newWords.push(arr)arr=[]}arr=newWords[0]for(vari=1;i

前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度

本文涉及知识点C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例包括课程视频单调双队列贪心题目给你一个下标从0开始的整数数组nums。你可以执行任意次操作。每次操作中,你需要选择一个子数组,并将这个子数组用它所包含元素的和替换。比方说,给定数组是[1,3,5,6],你可以选择子数组[3,5],用子数组的和8替换掉子数组,然后数组会变为[1,8,6]。请你返回执行任意次操作以后,可以得到的最长非递减数组的长度。子数组指的是一个数组中一段连续非空的元素序列。示例1:输入:nums=[5,2,2]输出:1解释:这个长度为3的数组不是非递减的。我们有2种方案使数组长度为2。第一种,选择子数组

baichuan-7B-chat微调报错及解决记录 使用的仓库:LLaMA-Factory 2023年11月27日

我所使用的代码仓库是LLaMA-Factoryhiyouga/LLaMA-Factory:Easy-to-useLLMfine-tuningframework(LLaMA,BLOOM,Mistral,Baichuan,Qwen,ChatGLM)(github.com)https://github.com/hiyouga/LLaMA-Factory/tree/mainA.解决问题推荐两个查询网址,在issue中查询:Issues·hiyouga/LLaMA-Factory(github.com)Issues·hiyouga/LLaMA-Factory(github.com)和Issues·bai

【27个FPGA实例源代码】助力你成为FPGA开发高手(可下载)

FPGA(可编程门阵列)技术在数字电路设计和嵌入式系统开发中有着广泛的应用。对于FPGA工程师来说,拥有丰富的FPGA实例源代码资料是非常重要的,因为这可以帮助工程师更好地理解FPGA编程的实际应用、解决问题、进行优化等。为了帮助FPGA工程师更好地理解和应用这一技术,今天为大家分享【27个FPGA实例源代码】,覆盖了各种应用场景和技术要点。这些实例代码不仅可以用于学习,还可作为解决实际工程问题的有力工具。供学习参考,可以填写IC入行指导,私信移知老师领取。话不多说,正文即将开始。如有侵权,联系删除!FPGA实例源代码资料对工作的帮助:1、学习和理解:实例源代码提供了实际应用的示例,有助于工程

【Leetcode】重排链表、旋转链表、反转链表||

目录💡重排链表题目描述方法一:方法二:💡旋转链表题目描述方法:💡反转链表||题目描述方法:💡总结💡重排链表题目描述给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 →L1 →…→Ln-1 →Ln 请将其重新排列后变为:L0 → Ln → L1 → Ln-1 → L2 → Ln-2 →…不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。提示:链表的长度范围为 [1,5*104]1方法一:将链表的每一个节点存在数组里,然后用下标访问的方式,交叉连接。/***Definitionforsingly-linkedlist.*structListNode{*intval;*

【LeetCode】2695. 包装数组

包装数组题目题解题目创建一个名为ArrayWrapper的类,它在其构造函数中接受一个整数数组作为参数。该类应具有以下两个特性:当使用+运算符将两个该类的实例相加时,结果值为两个数组中所有元素的总和当在实例上调用String()函数时,它将返回一个由逗号分隔的括在方括号中的字符串。例如,[1,2,3]示例1:输入:nums=[[1,2],[3,4]],operation="Add"输出:10解释:constobj1=newArrayWrapper([1,2]);constobj2=newArrayWrapper([3,4]);obj1+obj2;//10示例2:输入:nums=[[23,98,

反转链表、链表的中间结点、合并两个有序链表(leetcode 一题多解)

 一、反转链表给你单链表的头节点head,请你反转链表,并返回反转后的链表。力扣(LeetCode)官网-全球极客挚爱的技术成长平台思路一:翻转单链表指针方向这里解释一下三个指针的作用:n1:记录上一个节点,如果是第一个就指向空n2:记录此节点的位置n3:记录下一个节点的位置,让翻转后能找到下一个节点,防止丢失指针的地址/**Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*reverseList(structListNode*head){if(head

【Leetcode】相同的树、对称二叉树、另一颗树的子树

目录💡相同的树题目描述思路:代码:💡对称二叉树题目描述思路:代码:💡另一棵树的子树题目描述思路:代码:💡总结 💡相同的树题目描述给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。思路:这个题目实际上可以分解为许多个相同的子问题,就是检查每一个子树是否相同,然后便可以利用递归的思想来解答。代码:boolisSameTree(structTreeNode*p,structTreeNode*q){if(p==NULL&&q==NULL)returntrue;if(p==NULL&&q!=NULL)returnf